4 research outputs found

    Static Verification of Message Passing Programs

    Get PDF
    Many industrial applications, including safety-critical ones, consist of several dis- joint components that use message passing to communicate according to some protocol. These components are typically highly concurrent, since message ex- changes may occur in any order. Developing correct message passing programs is therefore very challenging, which makes proving their correctness crucial [4]. A popular API for implementing message passing programs is the Message Passing Interface (MPI) library. We focus on the modular veri�cation of MPI programs. Related work mainly focuses on communication and considers abstract models rather than concrete implementations [10,5]. We consider concrete Java code and combine static veri�cation with well-known techniques for reasoning about concurrent and distributed programs, based on process algebras [7]

    Future-based Static Analysis of Message Passing Programs

    No full text
    Message passing is widely used in industry to develop programs consisting of several distributed communicating components. Developing functionally correct message passing software is very challenging due to the concurrent nature of message exchanges. Nonetheless, many safety-critical applications rely on the message passing paradigm, including air traffic control systems and emergency services, which makes proving their correctness crucial. We focus on the modular verification of MPI programs by statically verifying concrete Java code. We use separation logic to reason about local correctness and define abstractions of the communication protocol in the process algebra used by mCRL2. We call these abstractions futures as they predict how components will interact during program execution. We establish a provable link between futures and program code and analyse the abstract futures via model checking to prove global correctness. Finally, we verify a leader election protocol to demonstrate our approach

    A Distributed Hash Table for Shared Memory

    No full text
    Distributed algorithms for graph searching require a high-performance CPU-efficient hash table that supports find-or-put. This operation either inserts data or indicates that it has already been added before. This paper focuses on the design and evaluation of such a hash table, targeting supercomputers. The latency of find-or-put is minimized by using one-sided RDMA operations. These operations are overlapped as much as possible to reduce waiting times for roundtrips. In contrast to existing work, we use linear probing and argue that this requires less roundtrips. The hash table is implemented in UPC. A peak-throughput of 114.9 million op/s is reached on an Infiniband cluster. With a load-factor of 0.9, find-or-put can be performed in 4.5μs on average. The hash table performance remains very high, even under high loads
    corecore